Retour index

Traduction d'une boucle faire tant que en assembleur 68K

Retour niveau sup

Le dictionnaire des variables  correspondant à l'algorithme est (visualiser l'algorithme):

Nom

Type

Catégorie

Allocation

num

entier.b

variable

d0

denum

entier.b

variable

d1

result

entier.b

variable

d2

denum.result

entier.w

variable

d3

 

Le choix de l'allocation est arbitraire. Ce choix est généralement guidé par les contraintes imposées par le cahier des charges. La notation entier.b n'est pas normalisée. Elle est appliquée au choix qui est fait ici d'implanter cet algorithme en assembleur 68K. Enfin, le fait qu'en assembleur, il n’est possible que de faire une opération par instruction, il est nécessaire d'ajouter une variable intermédiaire denum.result allouée dans d3. La traduction de l'algorithme donne :

 

début : move.b #$ff,d2      * result <- 0

* faire

faire:    add.b #$1,d2        * result <- result + 1

          move.b d2,d3        * d3 <- result

          mulu.b d1,d3        * d3 <- result.denum

          cmp.b d0,d3

          bcs faire

* si (result.denum < a) alors

         cmp.b d3,d0

         bcs alors

* finsi

retour   rts                   * fin du code

alors : sub.b #$1,d2           * result <- result – 1

        bra retour

Retour index

Suite